<?php
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// NOTICE OF COPYRIGHT                                                    //
//                                                                        //
// Dean`s Office for Moodle                                               //
// Электронный деканат                                                    //
// <http://deansoffice.ru/>                                               //
//                                                                        //
// Copyright (C) 2008-2999  Alex Djachenko (Алексей Дьяченко)             //
// alex-pub@my-site.ru                                                    //
// Copyright (C) 2008-2999  Evgenij Cigancov (Евгений Цыганцов)           //
// Copyright (C) 2008-2999  Ilia Smirnov (Илья Смирнов)                   // 
// Copyright (C) 2008-2999  Mariya Rojayskaya (Мария Рожайская)           // 
//                                                                        //
// This program is free software: you can redistribute it and/or modify   //
// it under the terms of the GNU General Public License as published by   //
// the Free Software Foundation, either version 3 of the Licensen.        //
//                                                                        //
// This program is distributed in the hope that it will be useful,        //
// but WITHOUT ANY WARRANTY; without even the implied warranty of         //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          //
// GNU General Public License for more details.                           //
//                                                                        //
// You should have received a copy of the GNU General Public License      //
// along with this program.  If not, see <http://www.gnu.org/licenses/>.  //
//                                                                        //
////////////////////////////////////////////////////////////////////////////


//проверяем доступ
$DOF->im('agroups')->require_access('editagroup', $agroupid);
// создаем путь на возврат
$path = $DOF->url_im('agroups','/list.php',$addvars);
if ( $form->is_cancelled() )
{//ввод данных отменен - возвращаем на страницу просмотра класса
    redirect($path);
}elseif ( $form->is_submitted() AND confirm_sesskey() AND $formdata = $form->get_data() )
{//даные переданы в текущей сессии - получаем
    // print_object($formdata);    
    // создаем объект для сохранения в БД
    $agroup = new object;
    $agroup->name         = trim($formdata->name);
    $agroup->code         = trim(mb_strtolower($formdata->code,'utf-8'));
    $agroup->departmentid = $formdata->departmentid;
    $agroup->programmid   = $formdata->progages[0]; // программа и номер периода уcтанавливаются через hierselect
 
     //получаем айди метаконтракта
    $metacontractid = trim($formdata->metacontract['id']);
    //если поле не пустое-манипулируем с данными
    if (!empty($formdata->metacontract['metacontract']))
    {
        //иначе пробуем интерпретировать текст в айди
        if ((preg_match("/^[0-9]*$/", $formdata->metacontract['metacontract'])))
        {   //такого метаконтракта в базе нет-ошибка
            if (!$DOF->storage('metacontracts')->is_exists($formdata->metacontract['metacontract']))
            {
                $DOF->print_error('metacontract_no_exist', '', NULL, 'im', 'sel');
            }
            else
            {
                if ($DOF->storage('metacontracts')->is_access('use', $formdata->metacontract['metacontract']))
                {
                    //если есть-заносим в базу
                    $agroup->metacontractid = $formdata->metacontract['metacontract'];
                }
                else 
                {
                    $DOF->print_error('form_err_no_use_object', '', NULL, 'modlib', 'ig');
                }
            }
        }
        else
        {
             //создадим строку для поиска в базе
            $preparestr = trim(substr($formdata->metacontract['metacontract'], 0, 
                    strrpos($formdata->metacontract['metacontract'],'[')));
            if (empty($preparestr))
            {
                $preparestr = trim($formdata->metacontract['metacontract']);
            }        
            //если нет такого обьекта-создадим
            if (!$DOF->storage('metacontracts')->is_exists(array('num' => 
                   $preparestr )))
            {
                $newmetacontractnum = $formdata->metacontract['metacontract'];
                
                $newmetacontract = new stdClass;
                
                $newmetacontract->num = $newmetacontractnum;
                $newmetacontract->departmentid = $formdata->departmentid;
                
                $newmetacontractid = $DOF->storage('metacontracts')->insert($newmetacontract);
                    
                if (is_numeric($newmetacontractid))
                {
                    $agroup->metacontractid = trim($newmetacontractid);
                }
    
                
                
            }    
            else    
            {    
                //если айди получен-заносим в базу
                if ((preg_match("/^[0-9]*$/", $metacontractid)) AND ($metacontractid !== '0'))
                {
                    if (!$DOF->storage('metacontracts')->is_exists($metacontractid))
                    {
                        $DOF->print_error('metacontract_no_exist', '', NULL, 'im', 'sel');
                    }
                    else
                    {
                        if ($DOF->storage('metacontracts')->is_access('use', $metacontractid))
                        {
                            $agroup->metacontractid = $metacontractid;
                        }
                        else
                        {
                            $DOF->print_error('form_err_no_use_object', '', NULL, 'modlib', 'ig');
                        }   
                    }     
                }
            }
            
        }
    }
    else 
    {
        $agroup->metacontractid = null;
    }
    
    
    
    if (isset($formdata->agroupid) AND $formdata->agroupid )
    {// класс редактировался - обновим запись в БД
        unset($formdata->agenum);
        if ( $DOF->storage('agroups')->update($agroup, $formdata->agroupid) )
        {
            redirect($DOF->url_im('agroups','/view.php?agroupid='.$formdata->agroupid,$addvars));
        }else
        {
            $error .= '<br>'.$DOF->get_string('errorsaveagroup','agroups').'<br>';
        }
    }else
    {// класс создавался
        // сохраняем запись в БД
        if( $id = $DOF->storage('agroups')->insert($agroup) )
        {// все в порядке - сохраняем статус и возвращаем на страниу просмотра класса
            $DOF->workflow('agroups')->init($id);
            redirect($DOF->url_im('agroups','/view.php?agroupid='.$id,$addvars));
        }else
        {// класс выбран неверно - сообщаем об ошибке
            $error .=  '<br>'.$DOF->get_string('errorsaveagroup','agroups').'<br>';
        }
    }
}
?>